package Q4;

import java.util.ArrayList;
/*
构造能让用户进行增加、删除、修改、查找以及遍历所有学生信息功能的对象
* */

public class method {
    ArrayList<student> studentSet = new ArrayList<>();
    ArrayList<String> idSet = new ArrayList<>();

    public method() {
    }
    //    1.自定义方法判断用户输入的id是否已经存在
    public boolean isContain(String id){
        return idSet.contains(id);
    }
    //    2.自定义增加方法
    public void addStd(student std) {
        if(!isContain(std.getStudentID())){
        studentSet.add(std);
        idSet.add(std.getStudentID());
        System.out.println("已经向学生信息管理系统中添加：" + std);}
        else{
            System.out.println("学生信息管理系统中已有学生ID为" + std.getStudentID()+" 的学生，" +
                    "如需对此ID中的学生信息进行修改，请进入修改功能。");
        }
    }
    //3.自定义删除方法
    public void deleteStd(String id){
        if(isContain(id)){
            int index = idSet.indexOf(id);
//            System.out.println("index in idSet:"+ index);
//            System.out.println("index in StdSet:"+ studentSet.get(index));
            if(studentSet.get(index).getStudentID().equals(id)){
                student stdDlt = studentSet.get(index);
                studentSet.remove(index);
                idSet.remove(id);
                System.out.println("已经成功删除ID是"+ id+ "的学生：" + stdDlt);
            }
        }
        else System.out.println("删除失败，没有找到ID是 " + id + " 的学生");
    }
//    4. 自定义修改方法（参数中choice是用来判断修改哪一个信息，A是id B是姓名 C是年龄）
    public void modifyStd(String id, String choice, Object newInfo){
        if(isContain(id)){
            int index = idSet.indexOf(id);
            if(studentSet.get(index).getStudentID().equals(id)){
                student stdMdy = studentSet.get(index);
                if(choice.equals("A")){
                    modifyID((String) newInfo,stdMdy);
                    idSet.set(index,(String) newInfo);
                    System.out.println("已将原学生ID为 "+ id +" 的信息修改为"+ stdMdy);
                }
                else if (choice.equals("B")){
                    stdMdy.setStudentName((String) newInfo);
                    System.out.println("已将原学生ID为 "+ id +" 的信息修改为"+ stdMdy);
                }
                else if(choice.equals("C")){
                    stdMdy.setStudentAge((int) newInfo);
                    System.out.println("已将原学生ID为 "+ id +" 的信息修改为"+ stdMdy);
                }
                else System.out.println("请输入正确的选项");
            }
        }else System.out.println("修改失败，没有找到ID是 " + id + " 的学生");
    }
    public void modifyID(String newID, student std){
        std.setStudentID(newID);
        System.out.println("已将ID修改为：" + newID);
    }
//    5. 自定义查找方法
    public void searchStd(String id){
        if(isContain(id)){
            int index = idSet.indexOf(id);
            if(studentSet.get(index).getStudentID().equals(id)){
                student std = studentSet.get(index);
                System.out.println("ID为"+ id + " 的学生信息是" + std);
            }
        }
        else System.out.println("没有找到ID是" + id + " 的学生\n");
    }
//    6. 自定义遍历方法
    @Override
    public String toString() {
        return new StringBuilder().append("学生信息系统已有学生信息如下：\n").append(studentSet).toString();
    }
}
